package br.ufscar.acumaaf.smc.activity;

import br.ufscar.acumaaf.smc.R;
import br.usfacar.acumaaf.smc.webservice.RestClientGrupoAtividadeFisica;
import br.usfacar.acumaaf.smc.webservice.RestClientMatricula;
import br.usfacar.acumaaf.smc.webservice.RestClientSessao;
import br.usfacar.acumaaf.smc.webservice.RestClientUsuario;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Looper;
import android.util.Log;

public class SincronizaDado extends Activity{

	private static final int HELLO_ID = 1;
	private ProgressDialog dialog;
	
	public void onCreate(Bundle b){
		super.onCreate(b);
		setContentView(R.layout.sincroniza_dado);
		
		//Criação do Alerta para falha na conexão com a internet
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Falha na Sincronização!");
        builder.setMessage("Nem todos os dados foram sincronizados com o SIAF! Verifique sua conexão com a internet...");
        builder.setCancelable(false);
        builder.setIcon(R.drawable.alerticon);
        
        builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				dialog.cancel();				
	   			finish();
			}
		});
        
        dialog = ProgressDialog.show(SincronizaDado.this, "Sincronizando", "Sincronizando dados com o SIAF. Por favor aguarde...!", true);
			//Thread que sincroniza as tabelas do SMC com o SIAF
			new Thread(){
				public void run(){
					Looper.prepare();
					//Busca dados das tabelas do SIAF para sincronizá-los com o SMC
					boolean retornoGrupoAtividadeFisica = RestClientGrupoAtividadeFisica.getDadosTabelaGrupoAtividadeFisicaSiaf(getApplicationContext());
					boolean retornoMatriculaUsuarioGrupoAtividadeFisica = RestClientMatricula.getDadosTabelaMatriculaUsuarioGrupoAtividadeFisicaSiaf(getApplicationContext());
					boolean retornoSessao = RestClientSessao.getDadosTabelaSessaoSiaf(getApplicationContext());
					boolean retornoUsuario = RestClientUsuario.getDadosTabelaUsuarioSiaf(getApplicationContext());
					//Se a sincronização não foi realizada (retorno = false)
					Log.i("smc","SMCActivity:BotaoAcessar | Retorno do método de getSincronizacao. RetornoGrupoAtividadeFisica = " + retornoGrupoAtividadeFisica);
					Log.i("smc","SMCActivity:BotaoAcessar | Retorno do método de getSincronizacao. RetornoMatriculaUsuarioGrupoAtividadeFisica = " + retornoMatriculaUsuarioGrupoAtividadeFisica);
					Log.i("smc","SMCActivity:BotaoAcessar | Retorno do método de getSincronizacao. RetornoSessao = " + retornoSessao);
					Log.i("smc","SMCActivity:BotaoAcessar | Retorno do método de getSincronizacao. RetornoUsuario = " + retornoUsuario);
					if(!(retornoUsuario && retornoSessao && retornoGrupoAtividadeFisica && retornoMatriculaUsuarioGrupoAtividadeFisica)){
						Log.i("smc","SMCActivity:BotaoAcessar | Entrou na condicional que chama o alertDialog!");
						//Fechando o dialog
   					dialog.dismiss();
   					builder.show();
   		   			Looper.loop();
					}
					else{
						NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
						Notification notification = new Notification(android.R.drawable.checkbox_on_background, "Sucesso!",System.currentTimeMillis());
						notification.defaults |= Notification.DEFAULT_SOUND;
						notification.flags |= Notification.FLAG_AUTO_CANCEL;
						Context context = getApplicationContext();
						CharSequence contentTitle = "Sincronização realizada";
						CharSequence contentText = "Os dados foram recebidos do SIAF.";
						//Intent notificationIntent = new Intent("CHAMA_ACTIVITY_HOME");
						PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, null, 0);
						notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
						notificationManager.notify(HELLO_ID,notification);
						
						//Sincronizando os dados do SMC com o SIAF - Inicia o Serviço de sincronização
						startService(new Intent("INICIAR_SERVICO_SINCRONIZACAO_DADOSESSAO"));
						
	   					//Fechando o dialog
						dialog.dismiss();
	   		   			finish();
	   		   			Looper.loop();
					}	
				}	
			}.start();
	}
}